#include<iostream>
#include<string>
using namespace std;

class Stringblob{
	friend ostream& operator<<(ostream& os,Stringblob& ns);
	friend istream& operator>>(istream& is,Stringblob& ns);
	private:
		string data;
		static int count;
	public:
		Stringblob(string& a):data(a){++count;}
		Stringblob(char* a);
		Stringblob();
		Stringblob(const Stringblob& ns);
		
		operator string() const;
		operator int() const;
		bool operator==(Stringblob& which);
		Stringblob& operator=(const Stringblob& ns);
		Stringblob& operator++()=delete;
		string operator++(int)=delete;
		char& operator[](const int which);
		~Stringblob();
};

int Stringblob::count=0;

char& Stringblob::operator[](const int which){
	return data[which];
}

Stringblob::operator int() const{
	return count;
}

Stringblob::operator string() const{ 
	return data;
}

Stringblob::Stringblob(const Stringblob& ns){
	data=ns.data;
	++count;
}

Stringblob::Stringblob(){
	++count;
}

Stringblob::Stringblob(char* a){
	while((*a) != '\0'){
		data.push_back(*a);
		++a;
	}
	++count;
}

istream& operator>>(istream& is,Stringblob& ns){
	is>>ns.data;
	return is;
}

ostream& operator<<(ostream& os,Stringblob& ns){
	os<<ns.data<<endl;
	return os;
}


int main(){
	
}
